package com.dc.designPattern._2_factory._2_factorymethod.order;

import com.dc.designPattern._2_factory._2_factorymethod.pizza.Pizza;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Description: 披萨订单，演示 使用简单工厂，静态方法创建
 * 推荐使用此类的处理
 * @author: gdc
 * @date: 2021/3/7
 * @version 1.0
 */
public abstract class OrderPizza {

	/**
	 * 通过 披萨订单类型，创建订单信息（具体由子类实现）
	 * @param orderType			订单类型
	 * @return					披萨
	 */
	protected abstract Pizza createPizza(String orderType);

	public OrderPizza() {
		do {
			// 获取创建披萨订单的类型
			String orderType = getType();
			// 创建披萨
			Pizza pizza = createPizza(orderType);
			if (pizza != null) {
				// 订购成功, 输出pizza
				pizza.execute();
			} else {
				System.out.println(" 订购披萨失败 ");
				break;
			}
		} while (true);
	}

	/**
	 * 可以获取客户希望订购的披萨种类
	 */
	private String getType() {
		try {
			BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
			System.out.println("input pizza 种类:");
			return strin.readLine();
		} catch (IOException e) {
			e.printStackTrace();
			return "";
		}
	}
}
